在開發程式時常常會遇到執行錯誤的狀況,今天要介紹的例外處理屬於流程控制的一種,可以蒐集錯誤訊息並處理錯誤,避免整個程式因為發生錯誤而停止執行。
下圖是 JavaScript 中常見的錯誤類型:
有時上述的錯誤會在使用者執行的時候出現,因此可以使用例外處理把程式拋出的錯誤訊息蒐集起來,並在程式出錯時執行指定程式碼進行錯誤後的處理。
try {
// statements
} catch (err) {
// statements
} [finally {
// statements
}]
try {} 區塊內放的是預期可能會發生錯誤的程式碼。catch {} 區塊內放的是出現錯誤時,要被執行的處理程式碼。err 是發生的錯誤的類型。finally {} 區域可省略,是最後會被執行的程式碼。try {
console.log(a);
} catch(err) {
console.log(err.name + ': ' + err.message);
} finally {
console.log("Stopping print a.");
}

console.log(a);沒有使用try...catch語法,是不會讓程式繼續執行console.log("Stopping print a.");的:
如果想把ReferenceError: a is not defined的錯誤訊息翻成中文,可以用throw語法客製化錯誤訊息:
try {
console.log(a);
throw new Error("a 沒有被定義!");
} catch(err) {
console.log(err.name + ': ' + err.message);
}

可以看到使用throw語法後的錯誤類型變成 Error,詳細錯誤訊息被改成a 沒有被定義!。所以輸出的err.name、err.message 也會跟著被更改。